package com.miracle;

/**
 *
 * 给你一个整数 n ，请你找出并返回第 n 个 丑数 。
 *
 * 丑数 就是只包含质因数 2、3 和/或 5 的正整数
 * @author : miracle
 * @version : 1.0.0
 * @date : 2021/4/11 10:13
 */
public class NthUglyNumber {

    private static int[] keys = {2,3,5};

    public static void main(String[] args) {
        int i = nthUglyNumber(10);
        System.out.println(i);
    }

    public static int nthUglyNumber(int n) {

        int ret = 1;
        while (n > 0) {
            int temp = ret;
            if (isUgly(temp)) {
                n--;
            }
            if (n > 0) {
                ret++;
            }
        }

        return ret;
    }

    private static boolean isUgly(int num) {
        for (int key : keys) {
            while (num % key == 0) {
                num /= key;
            }
        }
        return num == 1;
    }

}
